//  几天后的 年 / 月 / 日  时 : 分 : 秒
/* 
    参数 number 传入数字 如 7
    返回结果  当前日期 N 天后的 年 / 月 / 日  时 : 分 : 秒
*/ 
function publicDateDistance(number){
    if(number){
        let timestamp = Math.ceil(new Date().getTime()/1000) //当前时间戳
        let seventimes = 24*60*60*Number(number) //N天时间戳
        let sevent = timestamp+seventimes;  // 相加的时间戳
        let date = new Date(parseInt(sevent) * 1000)  //获得13位的时间戳
        let Y = date.getFullYear() + '/';  //年
        let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '/'; //月
        let D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + ' '; //日
        let h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':'; //时
        let m = (date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':'; //分
        let s = (date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds());  //秒
        let DistanceDate = String(Y+M+D+h+m+s)
        return DistanceDate
    }else{
        alert('publicDateDistance(N天后的时间)方法没有找到参数')
    }
}


//  倒计时时间
/*
    参数 timestamp  传入时间 如:2020/1/1 00:00:00
    返回结果 年 / 月 / 日  时 : 分 : 秒
    ps:需要循环执行
*/ 
function publicCountdownDate(timestamp){
    if(timestamp){
        let publictime;
        let endDate = new Date(timestamp).getTime()  //要倒计时的时间 
        let nowDate = new Date().getTime()   //当前时间
        // 相差的总秒数
        let totalSeconds = parseInt((endDate - nowDate) / 1000)
        // 相差的总天数
        let days = Math.floor(totalSeconds/(60*60*24))
        //  取出天的余数
        let modulo = totalSeconds % (60*60*24)
        // 相差的小时数
        let hours = Math.floor(modulo/(60*60))
        // 取出小时的余数
        modulo = modulo % (60*60)
        // 相差的分钟
        let minutes = Math.floor(modulo /60)
        // 取出最后的秒数
        let seconds = modulo % 60
        // 如果分钟<=0 并且 小时<=0并且 天数<=0 并且 秒数 <=0
        if(minutes<=0 && hours<=0 && hours<=0 && days <= 0 && seconds<=0){
                publictime = false
        //如果 小时<=0 并且 天数<=0 并且 分钟 大于= 0 并且 秒 大于 = 1 
        }else if(hours<=0 && days <= 0 && minutes<=0 && seconds >=1){
            if(seconds<10){
                publictime = '0'+seconds +'秒'
            }else{
                publictime = seconds +'秒'
            }
            setTimeout(function(){
                publicCountdownDate(timestamp)
            },1000)
        }else if(hours<=0 && days <= 0 && minutes>=1 && seconds >=0){
            if(seconds<10){
                publictime = minutes + "分钟" +'0'+seconds +'秒'
            }else{
                publictime = minutes + "分钟" +seconds +'秒'
            }
            setTimeout(function(){
                publicCountdownDate(timestamp)
            },1000)
        }else if(days<=0 ){
            if(seconds<10){
                publictime =  hours + "小时" + minutes + "分钟"+ '0' + seconds +'秒'
            }else{
                publictime =  hours + "小时" + minutes + "分钟"+seconds +'秒'
            }
            setTimeout(function(){
                publicCountdownDate(timestamp)
            },1000)
        }else{
            if(seconds<10){
                publictime = days + "天" + hours + "小时" + minutes + "分钟"+ '0' +seconds +'秒'
            }else{
                publictime = days + "天" + hours + "小时" + minutes + "分钟"+seconds +'秒'
            }
            setTimeout(function(){
                publicCountdownDate(timestamp)
            },1000)
        }
        return publictime
    }else{
        alert('publicCountdownDate(倒计时)方法没有找到参数')
    }
}


// 时间戳转换日期
/*
    参数 timestamp  传入时间戳 如:13952200000
    返回结果 年 / 月 / 日  时 : 分 : 秒
*/ 
function publicTimestampDate(timestamp){
    if(timestamp){
        let date;
        if(timestamp.toString().length <= 10){
            date = new Date(parseInt(timestamp) * 1000)  //获得13位的时间戳
        }else{
            date = new Date(parseInt(timestamp))
        }
        let Y = date.getFullYear() + '/';  //年
        let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '/'; //月
        let D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + ' '; //日
        let h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':'; //时
        let m = (date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':'; //分
        let s = (date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds());  //秒
        let TimestampDate = String(Y+M+D+h+m+s)
        return TimestampDate
    }else{
        alert('publicTimestampDate(时间戳转换日期)没有传入参数')
    }
}
// 日期转换时间戳
/*
    参数 timestamp  传入时间 如:2020/1/1 00:00:00
    参数 type  传入1 返回13位时间戳  传入2 返回10位时间戳
    返回结果 时间戳 如: 1577808000000  或 1577808000
*/ 
function publicDateTimestamp(dateChange,type){
    if(dateChange){
        if(type == 13){
            let date = dateChange.substring(0,19);    
            date = dateChange.replace(/-/g,'/'); 
            let timestamp = new Date(date).getTime();
            return timestamp
        }else if(type == 10){
            let date = dateChange.substring(0,19);    
            date = dateChange.replace(/-/g,'/'); 
            let timestamp = new Date(date).getTime() / 1000;
            return timestamp
        }else{
            alert('type参数不正确 请检查')
        }
    }else{
        alert('publicDateTimestamp(日期转换时间戳)没有传入参数')
    }
    
}

// 特殊事件格式2019-01-03T00:18:21.000+0000转化成正常格式
/* 
    参数 timestamp  传入时间戳 如:2019-01-03T00:18:21.000+0000
    返回结果 年 / 月 / 日  时 : 分 : 秒
*/ 
function publicRenderTimeDate(date) {
    let numdate = date
    if(numdate){
        var dateee = new Date(numdate).toJSON();
        return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '') 
    }else{
        alert('publicRenderTimeDate(特殊事件格式转换)没有传入参数')
    }
}
// 正常格式 2020/1/1 00:00:00 转化成特殊事件格式2019-01-03T00:18:21.000+0000




// 获取时间日期 星期几
/*
    参数 now  传入 时间 如: 2020/1/1 00:00:00
    返回结果 星期几
*/ 
function publicWeekDate(now){
    if(now){
        let weekDate = new Date(now)
        let nowTime = publicRenderTimeDate(weekDate);  // 使用publicRenderTimeDate方法
        let date = nowTime.substring(0,10);//截取日期 
        let weekDay = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];  
        let myDate = new Date(Date.parse(date));  
        let wek = weekDay[myDate.getDay()]
        return wek
    }else{
        alert('publicWeekDate(获取星期几)没有传入参数')
    }

}   
